package com.ldzl.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ldzl.dto.BatchStockDTO;
import com.ldzl.dto.FrozenStateDTO;
import com.ldzl.dto.QueryInventoryNumDTO;
import com.ldzl.pojo.CkStockDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ldzl.pojo.CkStorageArea;
import com.ldzl.pojo.CkStorageLocation;
import com.ldzl.pojo.CkWarehouse;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.system.api.domain.BasicWlfl;
import com.ruoyi.system.api.domain.BasicWlflz;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
* @author 风止
* @description 针对表【ck_stock_detail(库存明细表)】的数据库操作Service
* @createDate 2025-07-04 11:38:23
*/
public interface CkStockDetailService extends IService<CkStockDetail> {


    /**
     * 根据条件分页查询库存明细
     * @param stockDetail
     * @return
     */
    List<CkStockDetail> selectStock(CkStockDetail stockDetail);

    /**
     * 查询所有分类
     * @return
     */
    List<BasicWlfl> findWlflz();

    /**
     * 查询单个产品的所有库存
     * @param item_code
     * @return
     */
    QueryInventoryNumDTO queryStock(String item_code);

    /**
     * 查询多个产品的所有库存
     * @param listCode
     * @return
     */
    List<QueryInventoryNumDTO> queryStockList(List<String> listCode);


    /**
     * 修改库存数量
     * @param item_code
     * @param quantity_num
     * @return
     */
    boolean updateInventory(String item_code,BigDecimal  quantity_num);

    /**
     * 批量修改库存数量
     * @param map
     * @return
     */
    boolean updateInventoryBatch(Map<String,BigDecimal>  map);

    /**
     * 增加库存（入库）
     * @param item_code 物料编码
     * @param quantity_num 数量
     * @return
     */
    boolean increaseInventory(String item_code, BigDecimal quantity_num);

    /**
     * 修改冻结状态
     * @param id
     * @param status
     * @return
     */
    public boolean updateFrozen(Long id, String status);

    /**
     * 修改更新人和更新时间
     * @param item_code
     * @param update_by
     * @return
     */
    boolean updateUpdate(String item_code,String update_by);

    /**
     * 根据物料编码查询批次库存信息
     * 用于派工时批次选择功能
     * @param itemCode 物料编码
     * @return 批次库存列表
     */
    List<BatchStockDTO> selectBatchStockByItemCode(String itemCode);
}
